package com.dc.datacollect.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dc.datacollect.dto.input.CreateCollectInput;
import com.dc.datacollect.dto.input.SubmitCollectInput;
import com.dc.datacollect.dto.output.*;
import com.dc.datacollect.entity.Collect;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author zhuangjie
* @description 针对表【collect(收集表)】的数据库操作Service
* @createDate 2023-06-21 16:07:26
*/
public interface CollectService extends IService<Collect> {

    Boolean createCollect(CreateCollectInput createCollectInput) throws Exception;

    Integer selectWaitSubmitCount(Long userId);

    List<Collect> getWaitSubmitAndNotExpire(Long userId);

    Boolean submitCollect(SubmitCollectInput submitCollectInput) throws Exception;

    List<InProgressCollectOutput> getInProgressCollect(Long userId);

    Page<EndedCollectOutput> getHistoryCollectList(Page<Collect> page, String keyword, Short type) throws Exception;

    Page<ConsoleCollectOutput> consoleCollectPageData(Page<ConsoleCollectOutput> page, String keyword);

    String exportCollect(Long collectId) throws Exception;

    Boolean removeCollectById(Long collectId) throws Exception;

    Boolean updateCollect(Collect collect) throws Exception;

    Page<CollectUserOutput> selectCollectUserPage(Page<CollectUserOutput> collectUserOutputPage,Long collectId, String keyword, Long groupId, Short status);

    List<CollectAssociatedGroupOutput> selectCollectGroupList(Long collectId);

    void expediting(Long collectId) throws Exception;

}
